package br.com.almanach.seguranca;

import br.com.almanach.dominio.seguranca.Papel;
import br.com.almanach.dominio.seguranca.Perfil;
import br.com.almanach.jsf.JSFUtil;
import br.com.almanach.jsf.Pagina;
import br.com.almanach.negocio.seguranca.PerfilNegocio;
import br.com.almanach.padrao.Editar;
import java.io.Serializable;
import javax.annotation.PostConstruct;
import javax.ejb.EJB;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
import javax.faces.event.ActionEvent;

@ManagedBean(name="editarPerfil")
@ViewScoped
public class EditarPerfil extends Editar implements Serializable {

    @EJB
    private PerfilNegocio perfilNegocio;
    
    private Perfil objeto;
    private Papel papel;

    @PostConstruct
    public void construtor(){
        String id = JSFUtil.getParametro("id");
        if(id!=null){
            objeto = perfilNegocio.buscar(new Integer(id));
        }
    }

    @Override
    public String salvar() {
        if(this.objeto.getId()==null){            
            perfilNegocio.incluir(this.objeto);
        }else{
            perfilNegocio.alterar(this.objeto);
        }
        return Pagina.LISTAR_PERFIL_REDIRECIONAR;
    }

    
    public void setPerfilNegocio(PerfilNegocio perfilNegocio) {
        this.perfilNegocio = perfilNegocio;
    }

    public Perfil getObjeto() {
        if(objeto==null){
            objeto = new Perfil();
        }
        return objeto;
    }

    public void setObjeto(Perfil objeto) {
        this.objeto = objeto;
    }

    public Papel getPapel() {
        if(this.papel==null){
            this.papel = new Papel();
        }
        return papel;
    }

    public void setPapel(Papel papel) {
        this.papel = papel;
    }

    public void incluir(ActionEvent actionEvent){
        objeto.getPapeis().add(papel);
        papel = null;
    }

    public String remover(Papel papel){
        objeto.getPapeis().remove(papel);
        return null;
    }

    public String voltar(){
        return Pagina.LISTAR_PERFIL_ENCAMINHAR;
    }

}